a11y: Simplify GtkWindowAccessible
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 28 May 2020 13:02:04 +0000 (14:02 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Fri, 5 Jun 2020 19:35:10 +0000 (20:35 +0100)
Have GtkWindow notify of title changes, instead of overriding
GtkWidgetAccessible.notify_gtk.

gtk/a11y/gtkwindowaccessible.c

index b25eeffb9654deef919c325c0ac276e24e983442..6485cf8e69e0778523a804f968ed2b83aa8c0021 100644 (file)
@@ -61,19 +61,14 @@ gtk_window_accessible_focus_event (AtkObject *obj,
 }
 
 static void
-gtk_window_accessible_notify_gtk (GObject    *obj,
-                                  GParamSpec *pspec)
+on_title_changed (GObject             *gobject,
+                  GParamSpec          *pspec,
+                  GtkWindowAccessible *self)
 {
-  GtkWidget *widget = GTK_WIDGET (obj);
-  AtkObject* atk_obj = gtk_widget_get_accessible (widget);
+  AtkObject *atk_obj = ATK_OBJECT (self);
 
-  if (g_strcmp0 (pspec->name, "title") == 0)
-    {
-      g_object_notify (G_OBJECT (atk_obj), "accessible-name");
-      g_signal_emit_by_name (atk_obj, "visible-data-changed");
-    }
-  else
-    GTK_WIDGET_ACCESSIBLE_CLASS (gtk_window_accessible_parent_class)->notify_gtk (obj, pspec);
+  g_object_notify (G_OBJECT (atk_obj), "accessible-name");
+  g_signal_emit_by_name (atk_obj, "visible-data-changed");
 }
 
 static const gchar *
@@ -244,14 +239,21 @@ gtk_window_accessible_ref_child (AtkObject *object,
   return NULL;
 }
 
+static void
+gtk_window_accessible_initialize (AtkObject *object,
+                                  gpointer   data)
+{
+  GtkWidget *window = data;
+
+  g_signal_connect (window, "notify::title", G_CALLBACK (on_title_changed), object);
+}
+
 static void
 gtk_window_accessible_class_init (GtkWindowAccessibleClass *klass)
 {
-  GtkWidgetAccessibleClass *widget_class = (GtkWidgetAccessibleClass*)klass;
   AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
 
-  widget_class->notify_gtk = gtk_window_accessible_notify_gtk;
-
+  class->initialize = gtk_window_accessible_initialize;
   class->get_name = gtk_window_accessible_get_name;
   class->get_index_in_parent = gtk_window_accessible_get_index_in_parent;
   class->ref_relation_set = gtk_window_accessible_ref_relation_set;